home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 2: Applications / Linux Cubed Series 2 - Applications.iso / editors / emacs / xemacs / xemacs-1.006 / xemacs-1 / lib / xemacs-19.13 / info / ediff.info-2 < prev    next >
Encoding:
GNU Info File  |  1995-09-01  |  29.7 KB  |  585 lines

  1. This is Info file ../info/ediff.info, produced by Makeinfo-1.63 from
  2. the input file ediff.texi.
  3.  
  4.    This file documents Ediff, a comprehensive visual interface to Unix
  5. `diff' and `patch' utilities.
  6.  
  7.    Permission is granted to make and distribute verbatim copies of this
  8. manual provided the copyright notice and this permission notice are
  9. preserved on all copies.
  10.  
  11. 
  12. File: ediff.info,  Node: Merging and diff3,  Next: Support for Version Control,  Prev: Patch and Diff Programs,  Up: Customization
  13.  
  14. Merging and diff3
  15. =================
  16.  
  17.    Ediff supports 3-way comparison via the functions `ediff-files3' and
  18. `ediff-buffers3'. The interface is the same as for 2-way comparison.
  19. In 3-way comparison and merging, Ediff reports if any two difference
  20. regions are identical. For instance, if the current region in buffer A
  21. is the same as the region in buffer C, then the mode line of buffer A
  22. will display [=diff(C)] and the mode line of buffer C will display
  23. [=diff(A)].
  24.  
  25.    Merging is done according to the following algorithm.
  26.  
  27.    If a difference region in one of the buffers, say B, differs from
  28. the ancestor file while the region in the other buffer, A, doesn't,
  29. then the merge buffer, C, gets B's region. Similarly when buffer A's
  30. region differs from the ancestor and B's doesn't.
  31.  
  32.    If both regions in buffers A and B differ from the ancestor file,
  33. Ediff will choose the region according to the value of the variable
  34. `ediff-default-variant'
  35.      If set to `default-A' then A's region is chosen. If set to
  36.      `default-B' then B's region is chosen. If set to `combined' then
  37.      the region in buffer C will look like this:
  38.           #ifdef NEW  /* variant A */
  39.           difference region from buffer A
  40.           #else  /* variant B */
  41.           difference region from buffer B
  42.           #endif  /* NEW */
  43.      The actual strings that separate the regions copied from bufer A
  44.      and B are controlled by the variable
  45.  
  46. `ediff-combination-pattern'
  47.      A list of three strings. The first is inserted before the
  48.      difference region of buffer A; the second string goes between the
  49.      regions; the third will trail region B, as shown in the above
  50.      example.
  51.  
  52.    In addition to the state of the difference, during merging Ediff
  53. displays the state of the merge for each region. If a difference came
  54. from buffer A by default (because both regions A and B were different
  55. from the ancestor and ediff-default-variant was set to `default-A')
  56. then [=diff(A) default-A] is displayed in the mode line.  If the
  57. difference in buffer C came, say, from buffer B because the difference
  58. region in that buffer differs from the ancestor, but the region in
  59. buffer A does not (if merging with an ancestor) then [=diff(B)
  60. prefer-B] is displayed. The indicators default-A/B and prefer-A/B are
  61. inspired by emerge.el and have the same meaning.
  62.  
  63.    Another indicator of the state of merge is `combined'. It appears
  64. with any difference region in buffer C that was obtained by combining
  65. the difference regions in buffers A and B as explained above.
  66.  
  67.    In addition to state of merge and difference indicator, in merging
  68. with an ancestor file or buffer, Ediff informs the user when the
  69. current difference region in the (normally invisible) ancestor buffer
  70. is empty via the *AncestorEmpty* indicator. This helps determine if the
  71. changes made to the original in variants A and B represent pure
  72. insertion or deletion of text: if the mode line shows *AncestorEmpty*
  73. and the corresponding region in buffers A or B is not empty, this means
  74. that new text was inserted. If this indicator is not present and the
  75. difference regions in buffers A or B are non-empty, this means that
  76. text was modified. Otherwise, the original text was deleted.
  77.  
  78.    Although the ancestor buffer is normally invisible, Ediff maintains
  79. difference regions there and advances the current difference region
  80. accordingly. All highlighting of difference regions is provided in the
  81. ancestor buffer, except for the fine differences.  Therefore, if
  82. desired, the user can put the ancestor buffer in a separate frame and
  83. watch it there. However, on a TTY, only one frame can be visible at any
  84. given time, and Ediff doesn't support any single-frame window
  85. configuration where all buffers, including the ancestor buffer, would
  86. be visible. However, the ancestor buffer can be displayed by typing `/'
  87. to the control window. (Type `C-l' to hide it again.)
  88.  
  89.    Note that the state-of-difference indicators `=diff(A)' and
  90. `=diff(B)' above are not redundant, even in the presence of a
  91. state-of-merge indicator. In fact, the two serve different purposes.
  92. For instance, if the mode line displays [=diff(B) prefer(B)] and you
  93. copy a difference region from buffer A to buffer C then `=diff(B)' will
  94. change to `diff-A' and the mode line will display [=diff(A) prefer-B].
  95. This indicates that the difference region in buffer C is identical to
  96. that in buffer A, but originally buffer C's region came from buffer B.
  97. This is useful to know because the original difference region in buffer
  98. C can be recovered by typing `r', if necessary.
  99.  
  100.    Ediff never changes the state-of-merge indicator, except in response
  101. to the `!' command (see below), in which case the indicator is lost.
  102. On the other hand, the state-of-difference indicator is changed
  103. automatically by the copying/recovery commands, `a', `b', `r', `+'.
  104.  
  105.    If Ediff is asked to recompute differences via the command `!', the
  106. information about origins of the regions in the merge buffer (default-A,
  107. prefer-B, or combined) will be lost. This is because recomputing
  108. differences in this case means running diff3 on buffers A, B, and the
  109. merge buffer, not on the ancestor buffer. (It makes no sense to
  110. recompute differences using the ancestor file, since in the merging
  111. mode Ediff assumes that the user did not edit buffers A and B, but he
  112. may have edited buffer C, and these changes are to be preserved.)
  113. Since some difference regions may disappear as a result of editing
  114. buffer C and others may arise, there is generally no simple way to tell
  115. where the various regions in the merge buffer came from.  In fact,
  116. recomputing differences erases all information about the ancestor
  117. buffer, so it will be unhighlighted and disconnected from the current
  118. Ediff session. (However, this doesn't kill the ancestor buffer.)
  119.  
  120.    In 3-way comparison, Ediff tries to disregard regions that consist
  121. entirely of white space. For instance, if, say, the current region in
  122. buffer A consists of the white space only (or if it is empty), Ediff
  123. will not take it into account for the purpose of computing fine
  124. differences. The result is that Ediff can provide a better visual
  125. information regarding the actual fine differences in the non-white
  126. regions in buffers B and C. Moreover, if the regions in buffers B and C
  127. differ in the white space only, then a message to this effect will be
  128. displayed.
  129.  
  130.    In the merge mode, the share of the split between window C (the
  131. window displaying the merge-buffer) and the windows displaying buffers
  132. A and B is controlled by the variable
  133. `ediff-merge-window-share'
  134.      The default is 0.5. To make the merge-buffer window smaller,
  135.      reduce this amount. It is not recommended to increase the size of
  136.      the merge-window to more than half the frame (i.e., to increase
  137.      the value of `ediff-merge-window-share') to more than 0.5, since
  138.      it would be hard to see the contents of buffers A and B.
  139.  
  140.    The user can temporarily shrink the merge window to just one line by
  141. typing `s'. This change is temporary, until Ediff finds a reason to
  142. redraw the screen. Typing `s' again restores the original window size.
  143.  
  144.    With a positive prefix argument, this command will make the merge
  145. window slightly taller. This change is persistent.  With ``-'' or with
  146. a negative prefix argument, the command `s' makes the merge window
  147. slightly shorter. This change also persistent.
  148.  
  149.    Ediff lets the user automatically ignore the regions where one of
  150. the buffer's regions is prefered because it disagrees with the
  151. ancestor, while the other buffer agrees with the ancestor. In this
  152. case, Ediff displays only the difference regions where the two buffers,
  153. A and B, both differ from the ancestor file. The variable that controls
  154. this behavior is
  155. `ediff-show-clashes-only'
  156.      The value of this variable can be toggled interactively, by typing
  157.      `$'.  Note that this variable controls only how Ediff chooses the
  158.      next/previous difference to show. The user can still jump directly
  159.      to any difference using the command `j' (with a prefix argument
  160.      specifying the difference number).
  161.  
  162. 
  163. File: ediff.info,  Node: Support for Version Control,  Next: Customizing the Mode Line,  Prev: Merging and diff3,  Up: Customization
  164.  
  165. Support for Version Control
  166. ===========================
  167.  
  168.    Ediff supports version control via the packages `vc.el' and
  169. `rcs.el'. The latter is a package written by Sebastian Kremer
  170. <sk@thp.Uni-Koeln.DE>, which is available in
  171.      `ftp.cs.buffalo.edu:pub/Emacs/rcs.tar.Z'
  172.      `ftp.uni-koeln.de:/pub/gnu/emacs/rcs.tar.Z'
  173.  
  174.    To specify which version control package you are using, set the
  175. variable `ediff-version-control-package', e.g.,
  176.      (setq ediff-version-control-package 'rcs)
  177.    A symbol. The default, is `vc'.  *Note*: both packages provide
  178. access to RCS, but only `vc.el' comes standard with Emacs and XEmacs.
  179. `ediff-revision-key'
  180.      A string. For files under revision control, one key can be bound
  181.      to the function `ediff-revision', which runs Ediff comparing
  182.      versions of the current buffer. This is controlled by the above
  183.      variable.  The default is `nil', i.e., Ediff doesn't bind any key
  184.      to run `ediff-revision'.
  185.  
  186.      If the version control package used is `vc.el', then
  187.      `ediff-revision-key' is bound in a key map accessible through the
  188.      prefix `C-x v', i.e., if you have e.g., `(setq ediff-revision-key
  189.      "=")' in your `~/.emacs' file, then to run `ediff-revision' you
  190.      will have to type `C-x v ='.
  191.  
  192.      If the version control package is `rcs.el' is used, then the key is
  193.      bound in the global Emacs map, the one available by default. For
  194.      that reason, it is recommended that the key should start with a
  195.      prefix, such as `C-c'.  For instance, if you would like to use
  196.      `C-c E' to run `ediff-revision', put `(setq ediff-revision-key
  197.      "\C-cE")' in your `~/.emacs' file.
  198.  
  199.      Note: Ediff doesn't bind `ediff-revision-key' when it is first
  200.      loaded. The binding takes effect only when the user invokes
  201.      `ediff-revision'. If you want the binding to take effect right from
  202.      the start, put this in your `~/emacs':
  203.           (setq ediff-revision-key "your-key")
  204.           (require 'ediff)
  205.           (ediff-load-version-control)
  206.      If you want the binding to take effect only after Ediff is first
  207.      loaded into your Emacs, use `ediff-load-hooks':
  208.           (setq ediff-revision-key "your-key")
  209.           (add-hook 'ediff-load-hooks 'ediff-load-version-control)
  210.  
  211. 
  212. File: ediff.info,  Node: Customizing the Mode Line,  Next: Miscellaneous,  Prev: Support for Version Control,  Up: Customization
  213.  
  214. Customizing the Mode Line
  215. =========================
  216.  
  217.    When Ediff is running, the mode line of Ediff Control Panel buffer
  218. shows the current difference number and the total number of difference
  219. regions in the two files.
  220.  
  221.    The mode line of the buffers being compared displays the type of the
  222. buffer (`A:', `B:', or `C:') and (usually) the file name. Ediff is
  223. trying to be intelligent in choosing the mode line buffer
  224. identification. In particular, it works well with uniquify.el and
  225. mode-line.el packages (which improve on the default way in which Emacs
  226. displays buffer identification).  If you don't like the way Ediff
  227. changes the mode line, there always is `ediff-prepare-buffer-hooks',
  228. which can be used to modify the mode line.
  229.  
  230. 
  231. File: ediff.info,  Node: Miscellaneous,  Next: Notes on Heavy-duty Customization,  Prev: Customizing the Mode Line,  Up: Customization
  232.  
  233. Miscellaneous
  234. =============
  235.  
  236.    The following is the last batch of variables that can be customized:
  237. `ediff-split-window-function'
  238.      Controls the way you want the window be split between file-A and
  239.      file-B (and file-C, if applicable).  It defaults to the vertical
  240.      split (`split-window-vertically', but you can set it to
  241.      `split-window-horizontally', if you so wish.
  242.  
  243. `ediff-merge-split-window-function'
  244.      Controls how windows are split between buffers A and B in the
  245.      merge mode.
  246.  
  247. `ediff-make-wide-display-function'
  248.      The user can toggle wide/regular display by typing `m'.  In the
  249.      wide display mode, buffers A, B (and C, when applicable) are
  250.      displayed in a single frame that is as wide as the entire
  251.      workstation screen.  This is useful when files are compared
  252.      side-by-side.  By default, the display is widened without changing
  253.      its height. However, the user can set the above variable to
  254.      indicate the name of a function to be called to widen the frame in
  255.      which to display the buffers. See the on-line documentation for
  256.      `ediff-make-wide-display-function' for details. It is also
  257.      recommended to look into the source of the default function
  258.      `ediff-make-wide-display'.
  259.  
  260. `ediff-use-last-dir'
  261.      Controls the way Ediff presents the default directory when it
  262.      prompts the user for files to compare.  If `nil', Ediff will use
  263.      the default directory of the current buffer when it prompts the
  264.      user for file names.  Otherwise, it will use the directories it
  265.      had previously used for files A, B, or C, respectively.
  266.  
  267. `ediff-no-emacs-help-in-control-buffer'
  268.      If t, makes `C-h' behave like the `DEL' key, i.e., it will move
  269.      you back to the previous difference rather than invoking help.
  270.      This is useful when, in an xterm window or on a dumb terminal, the
  271.      Backspace key is bound to `C-h' and is positioned more
  272.      conveniently than the `DEL' key.
  273.  
  274. `ediff-toggle-read-only-function'
  275.      Can be used to change the way Ediff toggles the read-only property
  276.      in its buffers.  By default, Ediff uses `toggle-read-only'. For
  277.      files under version control, Ediff first tries to check the files
  278.      out.
  279.  
  280. `ediff-keep-variants'
  281.      Default is `t', meaning that the buffers being compared or merged
  282.      will be preserved when Ediff quits. Setting this to `nil' causes
  283.      Ediff to offer the user a chance to delete these buffers (if they
  284.      are not modified).  Supplying a prefix argument to the quit
  285.      command (`q') temporarily reverses the meaning of this variable.
  286.      This is convenient when the user prefers one of the behaviors most
  287.      of the time, but occasionally needs the other behavior.
  288.  
  289.      Using `ediff-cleanup-hooks', one can make Ediff delete the variants
  290.      unconditionally (e.g., by making `ediff-janitor' into one of these
  291.      hooks).
  292.  
  293.    Ediff lets you toggle the way windows are split, so you can try
  294. different settings interactively.  *Note*: if buffers A and B (and C,
  295. if applicable) are in different frames, windows are not split,
  296. regardless of the value `ediff-split-window-function'.  Instead, other
  297. windows on these frames are deleted and Ediff starts displaying these
  298. buffers using these frames, one file per frame.  You can switch to the
  299. one-frame mode by hiding one of the buffers A/B/C.
  300.  
  301.    Note that if Ediff detects that the two buffers it compares are
  302. residing in separate frames, it assumes that the user wants them to be
  303. so displayed and stops splitting windows.  Instead, it will arrange
  304. each buffer to occupy its own frame.
  305.  
  306.    The user can also swap the windows where buffers are displayed by
  307. typing `~'.
  308.  
  309. 
  310. File: ediff.info,  Node: Notes on Heavy-duty Customization,  Prev: Miscellaneous,  Up: Customization
  311.  
  312. Notes on Heavy-duty Customization
  313. =================================
  314.  
  315.    Some users need to customize Ediff in rather sophisticated ways,
  316. which requires different defaults for different kinds of files (e.g.,
  317. SGML, etc.).  Ediff supports this kind of customization is several
  318. ways.  First, most customization variables are buffer-local. Those that
  319. aren't are usually accessible from within Ediff Control Panel, so one
  320. can make them local to the panel by calling make-local-variable from
  321. within `ediff-startup-hooks'.  Second, there is now a new optional
  322. (6-th) argument to `ediff-setup', which has the form `( (var-name-1 .
  323. val-1) (var-name-2 . val-2) ...)'.  The function `ediff-setup' will set
  324. the variables on the list to the respective values in the Ediff control
  325. buffer. This is an easy way to throw in custom variables (which usually
  326. should be buffer-local) that can then be tested in various hooks.  Make
  327. sure the variable `ediff-job-name' and `ediff-word-mode' are set
  328. properly in this case, as some things in Ediff depend on this.
  329. Finally, if custom-tailored help messages are desired, Ediff has
  330. `ediff-brief-help-message-custom' and `ediff-long-help-message-custom',
  331. which are local variables that can be set to a function that returns a
  332. string.
  333.  
  334.    When customizing Ediff, some other variables are useful, although
  335. they are not user-definable. First, it should be kept in mind that most
  336. of the Ediff variables are local to the Ediff control buffer, so this
  337. buffer must be current at the time these variables are accessed. The
  338. control buffer is accessible via the variable `ediff-control-buffer',
  339. which is also local to that buffer.
  340.  
  341.    Other variables of interest are:
  342. `ediff-buffer-A'
  343.      The first of the data buffers being compared.
  344.  
  345. `ediff-buffer-B'
  346.      The second of the data buffers being compared.
  347.  
  348. `ediff-buffer-C'
  349.      In three-way comparisons, this is the third buffer being compared.
  350.      In merging, this is the merge buffer.  In two-way comparison, this
  351.      variable is nil.
  352.  
  353. `ediff-window-A'
  354.      The window displaying buffer A. If buffer A is not visible, this
  355.      variable is nil or it may be a dead window.
  356.  
  357. `ediff-window-B'
  358.      The window displaying buffer B.
  359.  
  360. `ediff-window-C'
  361.      The window displaying buffer C, if any.
  362.  
  363. `ediff-control-frame'
  364.      A dedicated frame displaying the control buffer, if it exists.  It
  365.      is non-nil only if Ediff uses the multiframe display, i.e., when
  366.      the control buffer is in its own frame.
  367.  
  368. 
  369. File: ediff.info,  Node: Credits,  Next: Index,  Prev: Customization,  Up: Top
  370.  
  371. Credits
  372. *******
  373.  
  374.    Ediff was written by Michael Kifer <kifer@cs.sunysb.edu>. It was
  375. inspired by emerge.el written by Dale R. Worley <drw@math.mit.edu>.  An
  376. idea due to Boris Goldowsky <boris@cs.rochester.edu> made it possible
  377. to highlight fine differences in Ediff buffers. Alastair Burt
  378. <burt@dfki.uni-kl.de> ported Ediff to XEmacs, and Eric Freudenthal
  379. <freudent@jan.ultra.nyu.edu> made it work with VC.
  380.  
  381.    Many people provided help with bug reports, patches, and advice.
  382. Without them, Ediff would not be nearly as useful as it is now.  Here
  383. is a full list of contributors (I hope I didn't miss anyone):
  384.  
  385.      Alastair Burt <burt@dfki.uni-kl.de>, Paul Bibilo
  386.      <peb@delcam.co.uk>, Kevin Broadey
  387.      <KevinB@bartley.demon.co.uk>, Harald Boegeholz
  388.      <hwb@machnix.mathematik.uni-stuttgart.de>, Jin S. Choi
  389.      <jin@atype.com>, Eric Eide <eeide@asylum.cs.utah.edu>,
  390.      Kevin Esler <esler@ch.hp.com>, Robert Estes
  391.      <estes@ece.ucdavis.edu>, Eric Freudenthal
  392.      <freudent@jan.ultra.nyu.edu>, Job Ganzevoort
  393.      <Job.Ganzevoort@cwi.nl>, Boris Goldowsky
  394.      <boris@cs.rochester.edu>, Allan Gottlieb
  395.      <gottlieb@allan.ultra.nyu.edu>, Xiaoli Huang <hxl@epic.com>,
  396.      Larry Gouge <larry@itginc.com>, Karl Heuer
  397.      <kwzh@gnu.ai.mit.edu>, <irvine@lks.csi.com>,
  398.      <jaffe@chipmunk.cita.utoronto.ca>, David Karr
  399.      <dkarr@nmo.gtegsc.com>, Norbert Kiesel
  400.      <norbert@i3.informatik.rwth-aachen.de>,
  401.      Leigh L Klotz <klotz@adoc.xerox.com>, Fritz Knabe
  402.      <Fritz.Knabe@ecrc.de>, Heinz Knutzen
  403.      <hk@informatik.uni-kiel.d400.de>,
  404.      Andrew Koenig <ark@research.att.com>,
  405.      Ken Laprade <laprade@dw3f.ess.harris.com>, Will C Lauer <wcl@cadre.com>,
  406.      Richard Levitte <levitte@e.kth.se>, Mike Long <mike.long@analog.com>,
  407.      Martin Maechler <maechler@stat.math.ethz.ch>, Simon Marshall
  408.      <Simon.Marshall@mail.esrin.esa.it>, Richard Mlynarik
  409.      <mly@adoc.xerox.com>, Chris Murphy <murphycm@sun.aston.ac.uk>,
  410.      Eyvind Ness <Eyvind.Ness@hrp.no>, Ray Nickson
  411.      <nickson@cs.uq.oz.au>, Paul Raines <raines@slac.stanford.edu>,
  412.      Benjamin Pierce <benjamin.pierce@cl.cam.ac.uk>,
  413.      Tibor Polgar <tlp00@spg.amdahl.com>, C.S. Roberson
  414.      <roberson@aur.alcatel.com>, Kevin Rodgers <kevin.rodgers@ihs.com>,
  415.      Sandy Rutherford <sandy@ibm550.sissa.it>, Heribert Schuetz
  416.      <schuetz@ecrc.de>, Andy Scott <ascott@pcocd2.intel.com>,
  417.      Axel Seibert <axel@tumbolia.ppp.informatik.uni-muenchen.de>,
  418.      Richard Stallman <rms@gnu.ai.mit.edu>, Richard Stanton
  419.      <stanton@haas.berkeley.edu>, Ake Stenhoff
  420.      <etxaksf@aom.ericsson.se>, Stig <stig@hackvan.com>, Peter Stout
  421.      <Peter_Stout@cs.cmu.edu>, Chuck Thompson <cthomp@cs.uiuc.edu>,
  422.      Raymond Toy <toy@rtp.ericsson.se>, Ilya Zakharevich
  423.      <ilya@math.ohio-state.edu>
  424.  
  425. 
  426. File: ediff.info,  Node: Index,  Prev: Credits,  Up: Top
  427.  
  428. Index
  429. *****
  430.  
  431. * Menu:
  432.  
  433. * ediff-after-flag-eol:                 Highlighting Difference Regions.
  434. * ediff-after-flag-mol:                 Highlighting Difference Regions.
  435. * ediff-after-setup-control-frame-hooks: Hooks.
  436. * ediff-after-setup-windows-hooks:      Hooks.
  437. * ediff-auto-refine-limit:              Refinement of Difference Regions.
  438. * ediff-auto-refine:                    Refinement of Difference Regions.
  439. * ediff-before-flag-bol:                Highlighting Difference Regions.
  440. * ediff-before-flag-mol:                Highlighting Difference Regions.
  441. * ediff-before-setup-control-frame-hooks: Hooks.
  442. * ediff-before-setup-windows-hooks:     Hooks.
  443. * ediff-brief-help-message-custom:      Notes on Heavy-duty Customization.
  444. * ediff-buffers3:                       Major Entry Points.
  445. * ediff-buffers:                        Major Entry Points.
  446. * ediff-cleanup-hooks:                  Hooks.
  447. * ediff-combination-pattern:            Merging and diff3.
  448. * ediff-control-buffer:                 Quick Help.
  449. * ediff-control-frame-parameters:       Window and Frame Configuration.
  450. * ediff-control-frame-position-function: Window and Frame Configuration.
  451. * ediff-control-frame-upward-shift:     Window and Frame Configuration.
  452. * ediff-current-diff-face-A:            Highlighting Difference Regions.
  453. * ediff-current-diff-face-B:            Highlighting Difference Regions.
  454. * ediff-current-diff-face-C:            Highlighting Difference Regions.
  455. * ediff-custom-diff-options:            Patch and Diff Programs.
  456. * ediff-custom-diff-program:            Patch and Diff Programs.
  457. * ediff-default-variant:                Merging and diff3.
  458. * ediff-diff-options:                   Patch and Diff Programs.
  459. * ediff-diff-program <1>:               Refinement of Difference Regions.
  460. * ediff-diff-program:                   Patch and Diff Programs.
  461. * ediff-diff3-options:                  Patch and Diff Programs.
  462. * ediff-diff3-program:                  Patch and Diff Programs.
  463. * ediff-directories3:                   Major Entry Points.
  464. * ediff-directories:                    Major Entry Points.
  465. * ediff-directory-revisions:            Major Entry Points.
  466. * ediff-display-help-hooks:             Hooks.
  467. * ediff-even-diff-face-A:               Highlighting Difference Regions.
  468. * ediff-even-diff-face-B:               Highlighting Difference Regions.
  469. * ediff-even-diff-face-C:               Highlighting Difference Regions.
  470. * ediff-files3:                         Major Entry Points.
  471. * ediff-files:                          Major Entry Points.
  472. * ediff-fine-diff-face-A:               Highlighting Difference Regions.
  473. * ediff-fine-diff-face-B:               Highlighting Difference Regions.
  474. * ediff-fine-diff-face-C:               Highlighting Difference Regions.
  475. * ediff-forward-word-function:          Refinement of Difference Regions.
  476. * ediff-forward-word:                   Refinement of Difference Regions.
  477. * ediff-help-message:                   Quick Help.
  478. * ediff-highlight-all-diffs:            Highlighting Difference Regions.
  479. * ediff-ignore-similar-regions:         Selective Browsing.
  480. * ediff-janitor:                        Hooks.
  481. * ediff-job-name:                       Notes on Heavy-duty Customization.
  482. * ediff-keep-variants:                  Miscellaneous.
  483. * ediff-keymap-setup-hooks:             Hooks.
  484. * ediff-load-hooks:                     Hooks.
  485. * ediff-long-help-message-custom:       Notes on Heavy-duty Customization.
  486. * ediff-make-frame-position:            Window and Frame Configuration.
  487. * ediff-make-wide-display-function:     Miscellaneous.
  488. * ediff-merge-buffers-with-ancestor:    Major Entry Points.
  489. * ediff-merge-buffers:                  Major Entry Points.
  490. * ediff-merge-directories-with-ancestor: Major Entry Points.
  491. * ediff-merge-directories:              Major Entry Points.
  492. * ediff-merge-directory-revisions-with-ancestor: Major Entry Points.
  493. * ediff-merge-directory-revisions:      Major Entry Points.
  494. * ediff-merge-files-with-ancestor:      Major Entry Points.
  495. * ediff-merge-files:                    Major Entry Points.
  496. * ediff-merge-revisions-with-ancestor:  Major Entry Points.
  497. * ediff-merge-revisions:                Major Entry Points.
  498. * ediff-merge-split-window-function:    Miscellaneous.
  499. * ediff-merge-window-share:             Merging and diff3.
  500. * ediff-merge-with-ancestor:            Major Entry Points.
  501. * ediff-merge:                          Major Entry Points.
  502. * ediff-mode-hooks:                     Hooks.
  503. * ediff-narrow-control-frame-leftward-shift: Window and Frame Configuration.
  504. * ediff-no-emacs-help-in-control-buffer: Miscellaneous.
  505. * ediff-odd-diff-face-A:                Highlighting Difference Regions.
  506. * ediff-odd-diff-face-B:                Highlighting Difference Regions.
  507. * ediff-odd-diff-face-C:                Highlighting Difference Regions.
  508. * ediff-patch-buffer:                   Major Entry Points.
  509. * ediff-patch-file:                     Major Entry Points.
  510. * ediff-patch-options:                  Patch and Diff Programs.
  511. * ediff-patch-program:                  Patch and Diff Programs.
  512. * ediff-prefer-iconified-control-frame: Window and Frame Configuration.
  513. * ediff-prefer-long-help-message <1>:   Quick Help.
  514. * ediff-prefer-long-help-message:       Window and Frame Configuration.
  515. * ediff-prepare-buffer-hooks <1>:       Customizing the Mode Line.
  516. * ediff-prepare-buffer-hooks:           Hooks.
  517. * ediff-profile:                        Commands.
  518. * ediff-quit-hooks:                     Hooks.
  519. * ediff-regions-linewise <1>:           Narrowing.
  520. * ediff-regions-linewise:               Major Entry Points.
  521. * ediff-regions-wordwise <1>:           Narrowing.
  522. * ediff-regions-wordwise:               Major Entry Points.
  523. * ediff-registry-setup-hooks:           Hooks.
  524. * ediff-revert-buffers-then-recompute-diffs: Commands.
  525. * ediff-revision-key:                   Support for Version Control.
  526. * ediff-revision:                       Major Entry Points.
  527. * ediff-save-buffer:                    Patch and Diff Programs.
  528. * ediff-select-hooks:                   Hooks.
  529. * ediff-session-group-setup-hooks:      Hooks.
  530. * ediff-setup-windows-multiframe:       Window and Frame Configuration.
  531. * ediff-setup-windows-plain:            Window and Frame Configuration.
  532. * ediff-setup-windows:                  Window and Frame Configuration.
  533. * ediff-setup:                          Notes on Heavy-duty Customization.
  534. * ediff-show-clashes-only:              Merging and diff3.
  535. * ediff-split-window-function:          Miscellaneous.
  536. * ediff-start-narrowed:                 Narrowing.
  537. * ediff-startup-hooks <1>:              Quick Help.
  538. * ediff-startup-hooks <1>:              Notes on Heavy-duty Customization.
  539. * ediff-startup-hooks:                  Hooks.
  540. * ediff-suspend-hooks:                  Hooks.
  541. * ediff-toggle-multiframe <1>:          Commands.
  542. * ediff-toggle-multiframe:              Window and Frame Configuration.
  543. * ediff-toggle-read-only-function:      Miscellaneous.
  544. * ediff-unselect-hooks:                 Hooks.
  545. * ediff-use-last-dir <1>:               Miscellaneous.
  546. * ediff-use-last-dir:                   Major Entry Points.
  547. * ediff-version-control-package:        Support for Version Control.
  548. * ediff-wide-control-frame-rightward-shift: Window and Frame Configuration.
  549. * ediff-window-setup-function:          Window and Frame Configuration.
  550. * ediff-windows-linewise <1>:           Major Entry Points.
  551. * ediff-windows-linewise:               Narrowing.
  552. * ediff-windows-wordwise <1>:           Narrowing.
  553. * ediff-windows-wordwise:               Major Entry Points.
  554. * ediff-word-1:                         Refinement of Difference Regions.
  555. * ediff-word-2:                         Refinement of Difference Regions.
  556. * ediff-word-3:                         Refinement of Difference Regions.
  557. * ediff-word-4:                         Refinement of Difference Regions.
  558. * ediff-word-mode:                      Notes on Heavy-duty Customization.
  559. * ediff3:                               Major Entry Points.
  560. * ediff:                                Major Entry Points.
  561. * edir-merge-revisions-with-ancestor:   Major Entry Points.
  562. * edir-merge-revisions:                 Major Entry Points.
  563. * edir-revisions:                       Major Entry Points.
  564. * edirs-merge-with-ancestor:            Major Entry Points.
  565. * edirs-merge:                          Major Entry Points.
  566. * edirs3:                               Major Entry Points.
  567. * edirs:                                Major Entry Points.
  568. * epatch-buffer:                        Major Entry Points.
  569. * epatch:                               Major Entry Points.
  570. * split-window-horizontally:            Miscellaneous.
  571. * split-window-vertically:              Miscellaneous.
  572. * mode-line.el:                         Customizing the Mode Line.
  573. * rcs.el:                               Support for Version Control.
  574. * uniquify.el:                          Customizing the Mode Line.
  575. * vc.el:                                Support for Version Control.
  576. * Comparing files and buffers:          Introduction.
  577. * ediff-show-registry:                  Commands.
  578. * eregistry:                            Commands.
  579. * Finding differences:                  Introduction.
  580. * Merging files and buffers:            Introduction.
  581. * Multi-file patches:                   Session Groups.
  582. * Patching files and buffers:           Introduction.
  583.  
  584.  
  585.